package com.shujia.core.transformations

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

object MapOpt {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf()
    conf.setMaster("local")
    conf.setAppName("map算子操作")

    val sc = new SparkContext(conf)

    val lineRDD: RDD[String] = sc.textFile("spark/data/students.txt")

    /**
     *  map算子，主要原理是针对RDD中的每一条数据进行单独处理，会得到一个处理后的结果
     *
     *  map处理后的新结果，当处理结束后会立刻流向下一个RDD中进行处理
     */
    val resRDD: RDD[(String, String, String, String, String)] = lineRDD.map((line: String) => {
      println("======================== 张成阳真帅！ =============================")
      val infos: Array[String] = line.split(",")
      (infos(0), infos(1), infos(2), infos(3), infos(4))
    })


    //foreach其实是一个行动算子
    resRDD.foreach(println)

  }
}
